package cn.chenc.framework.core.component;

import cn.chenc.framework.core.model.AbstractLoginUser;
import jakarta.servlet.http.HttpServletRequest;


/**
 * 　@description: JwtTemplate抽象接口
 * 　@author secret
 * 　@date 2021/7/1 22:48
 *
 */
public interface AbstractJwtTemplate {


    /**
     * 获取登录用户
     * @param request
     * @return
     */
    AbstractLoginUser getLoginUser(HttpServletRequest request);

    /**
     * 设置登录用户
     * @param loginUser
     */
    void setLoginUser(AbstractLoginUser loginUser);

    /**
     * 删除登录用户
     * @param token
     */
    void delLoginUser(String token);

    /**
     * 创建token
     * @param loginUser
     * @return
     */
    String createToken(AbstractLoginUser loginUser);

    /**
     * 验证令牌有效期，相差不足20分钟，自动刷新缓存
     * @param loginUser
     * @return 令牌
     */
    void verifyToken(AbstractLoginUser loginUser);

    /**
     * 刷新令牌有效期
     * @param loginUser 登录信息
     */
    void refreshToken(AbstractLoginUser loginUser);

    /**
     * 设置用户代理信息
     * @param loginUser 登录信息
     */
    void setUserAgent(AbstractLoginUser loginUser);

}
